/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mindbox.mueblesalpes.presentacion.producto;

import com.mindbox.mueblesalpes.negocio.entity.MuebleInventario;
import com.mindbox.mueblesalpes.negocio.entity.Mueble;
import com.mindbox.mueblesalpes.negocio.exception.TiendaException;
import com.mindbox.mueblesalpes.negocio.producto.IProductoService;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.model.SelectItem;

/**
 *
 * Clase asociada al /producto/producto_inventario.xhtml
 * @author Catalina Soto Zuluaga
 */
public class ProductoInventarioBean {

    private String referencia;
    private Double precio;
    private Integer cantidad;
    private List<MuebleInventario> listProducto = new ArrayList<MuebleInventario>();
    private List<Mueble> listMuebles = new ArrayList<Mueble>();
    private List<SelectItem> mueblesItems = new ArrayList<SelectItem>();
    @EJB
    private IProductoService productoService;

    /** Creates a new instance of ProductoInventarioBean */
    public ProductoInventarioBean() {
        cantidad = 0;
        precio = 0.0;
    }

    @PostConstruct
    private void cargarItemsMuebles() {

        setListProducto(productoService.consultarInventarioProductos());
        setListMuebles(productoService.consultarMuebles());
        for (Mueble mueble : getListMuebles()) {
            SelectItem item = new SelectItem(mueble.getReferencia());
            getMueblesItems().add(item);
        }
    }

    /**
     * Método que permite insertar el inventario de producto
     * @return
     */
    public String insertarProducto() {

        try {
            MuebleInventario muebleInventario = new MuebleInventario();

            Mueble mueble = new Mueble();
            mueble.setReferencia(getReferencia());

            mueble = productoService.consultarMueblePorId(mueble);
            muebleInventario = productoService.consultarMuebleInventarioPorMueble(mueble);
            muebleInventario.setCantidad(getCantidad());
            muebleInventario.setPrecio(getPrecio());
            muebleInventario.setMueble(mueble);

            productoService.editarProductoInventario(muebleInventario);
            setListProducto(productoService.consultarInventarioProductos());
            cantidad = 0;
            precio = 0.0;
        } catch (TiendaException e) {
            Mensajes.asignarMensajeError(e.getMessage());
        } catch (Exception e) {
            Mensajes.asignarMensajeError(e.getMessage());
        }
        return null;
    }

    /**
     * @return the referencia
     */
    public String getReferencia() {
        return referencia;
    }

    /**
     * @param referencia the referencia to set
     */
    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    /**
     * @return the precio
     */
    public Double getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(Double precio) {
        this.precio = precio;
    }

    /**
     * @return the cantidad
     */
    public Integer getCantidad() {
        return cantidad;
    }

    /**
     * @param cantidad the cantidad to set
     */
    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    /**
     * @return the listProducto
     */
    public List<MuebleInventario> getListProducto() {
        return listProducto;
    }

    /**
     * @param listProducto the listProducto to set
     */
    public void setListProducto(List<MuebleInventario> listProducto) {
        this.listProducto = listProducto;
    }

    /**
     * @return the listMuebles
     */
    public List<Mueble> getListMuebles() {
        return listMuebles;
    }

    /**
     * @param listMuebles the listMuebles to set
     */
    public void setListMuebles(List<Mueble> listMuebles) {
        this.listMuebles = listMuebles;
    }

    /**
     * @return the mueblesItems
     */
    public List<SelectItem> getMueblesItems() {
        return mueblesItems;
    }

    /**
     * @param mueblesItems the mueblesItems to set
     */
    public void setMueblesItems(List<SelectItem> mueblesItems) {
        this.mueblesItems = mueblesItems;
    }
}